package com.tdd;

import java.math.BigDecimal;

public class RpnCalculator {
	private HpStack values = new HpStack();

	public BigDecimal peek() {
		return values.peek();
	}

	public void push(BigDecimal value) {
		values.push(value);
	}

	public BigDecimal pop() {
		return values.pop();
	}

	private void plus() {
		new Plus().operate(values);
	}

	public void execute(String operatorName) {
		if ("-".equals(operatorName))
			new Minus().operate(values);
		else if ("!".equals(operatorName))
			new Factorial().operate(values);
		else if ("+".equals(operatorName))
			plus();
		else
			throw new RuntimeException(String.format("%s - unknown operator",
					operatorName));
	}
}
